/**
 * 发送 GraphQL 请求或变更请求，并自动携带 Token 作为头部
 * function gqlfetch(url, query, variables = {})
 * @param {string} url - GraphQL 服务器地址
 * @param {string} query - GraphQL 查询语句
 * @param {object} variables - 变量参数
 * @returns {Promise<object>} - 返回请求结果
 */

import { getToken } from "./identify";
function gqlfetch(url, query, variables = {}) {
  return new Promise((resolve, reject) => {
    getToken()
      .then((token) => {
        uni.request({
          url: url,
          method: 'POST',
          header: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${token}`, // 使用获取到的 Token 作为头部
          },
          data: JSON.stringify({
            query: query,
            variables: variables,
          }),
          success(res) {
            if (res.statusCode === 200) {
              resolve(res.data);
            } else {
              reject(new Error("请求失败，状态码: " + res.statusCode));
            }
          },
          fail(err) {
            reject(err);
          },
        });
      })
      .catch((err) => {
        reject(err);
      });
  });
}

export {
  gqlfetch
}